The present invention relates generally to the field of messaging environments, and more particularly to controlling server selection.
With the advent of distributed computing, software applications are less constrained by the resources of the computing device of a user (e.g., a laptop computer, a tablet computer, a netbook computer, a personal computer, a personal digital assistant, a smart phone, or wearable devices (e.g., smart glasses, smart watch, etc.)). A software application executes a portion of its operations on the computing device of a user (e.g., a client device, client) and utilizes external resources (e.g., processing power, communications, databases, information, etc.) via networking. One architecture that enables client devices to access/share data, information, or hardware and software resources is the client-server architecture. One definition for a server is an executing instance (e.g., a specific realization of: a physical entity, a virtualized entity, an executing software, an illustrative construct) of a software application that is capable of accepting requests (e.g., to perform tasks) from a client device and responding (e.g., provide results) to a request from the client device. In some instances, the client and server can execute on the same computer (e.g., as virtual machines). A server can execute within a self-contained computer, a hardware entity within a larger system (e.g., blade server), or a virtualized construct (e.g., a virtual machine (VM)) dynamically created from a pool of physical and virtualized resources (e.g., processors, memory, direct-access storage devices (DASD), network switches, etc.). Another definition for a server is a computing device that executes the server software. In other instances, the hardware included in a server is predicated on the types of applications supported. Common server types include: database servers, file servers, mail servers, print servers, web servers, gaming servers, and application servers.
Another aspect of distributed computing is redundancy. Redundant servers (e.g., replicas) are utilized to balance workload, duplicate functionality, and safeguard information (e.g., database replication). Duplicated servers can have the same hostname, within a level of a domain tree, but are accessed via different network connections (e.g., addresses). The Internet Protocol (IP) address for a server is associated with the hostname of a server and resolved by a domain name system (DNS). Replica servers are not constrained to include identical hardware (e.g., processors, memory, DASD, etc.). Communications between the servers and the client device can occur via a messaging environment and channels (e.g., connections).
A messaging environment (e.g., distributed message passing) is a communications architecture that provides software developers the capability to provide common services between applications utilizing different operating systems and different programming languages and executing on disparate computing systems in different location. Message queuing permits asynchronous client-server communications and enables computing devices to engage in multiple interactions. Additional capabilities can be included in a messaging environment by utilizing middleware. Middleware is the infrastructure that facilitates the creation of business applications and provides core services like concurrency, transactions, threading, messaging, and the service component architecture framework for service-oriented architecture (SOA) applications. Middleware also provides security and enables high availability functionality to an enterprise. Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.